package cn.iocoder.yudao.module.train.service.coursestudentregistform;

import java.util.*;

import cn.iocoder.yudao.module.train.dal.dataobject.connectDTO.CourseStudentRegistFormDTO;
import jakarta.validation.*;
import cn.iocoder.yudao.module.train.controller.admin.coursestudentregistform.vo.*;
import cn.iocoder.yudao.module.train.dal.dataobject.coursestudentregistform.CourseStudentRegistFormDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 班级学生 Service 接口
 *
 * @author waynelam
 */
public interface CourseStudentRegistFormService {

    /**
     * 创建班级学生
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createCourseStudentRegistForm(@Valid CourseStudentRegistFormSaveReqVO createReqVO);

    /**
     * 批量添加班级学生
     *
     * @param classesId 班级ID
     * @param ids       订单ID
     */
    void createCourseStudentRegistFormByIds(Long classesId, List<Integer> ids);

    /**
     * 更新班级学生
     *
     * @param updateReqVO 更新信息
     */
    void updateCourseStudentRegistForm(@Valid CourseStudentRegistFormSaveReqVO updateReqVO);

    /**
     * 删除班级学生
     *
     * @param id 编号
     */
    void deleteCourseStudentRegistForm(Integer id);

    /**
    * 批量删除班级学生
    *
    * @param ids 编号
    */
    void deleteCourseStudentRegistFormListByIds(List<Integer> ids);

    /**
     * 获得班级学生
     *
     * @param id 编号
     * @return 班级学生
     */
    CourseStudentRegistFormDO getCourseStudentRegistForm(Integer id);

    /**
     * 获得班级学生分页
     *
     * @param pageReqVO 分页查询
     * @return 班级学生分页
     */
    PageResult<CourseStudentRegistFormDTO> getCourseStudentRegistFormPage(CourseStudentRegistFormPageReqVO pageReqVO);

    /**
     * 获得班级学生列表
     *
     * @param classesId 班级ID
     * @return 班级学生列表
     */
    List<CourseStudentRegistFormDTO> getCourseStudentRegistFormListByClassesId(Long classesId);

    public List<CourseStudentRegistFormDTO> getCourseStudentRegistFormListBystudentId(Long studentId);
}
